home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / sos3-2.lha / include / agg_use.h < prev    next >
C/C++ Source or Header  |  1991-11-08  |  46KB  |  1,112 lines

  1. #ifndef agg_SOSH
  2. #define agg_SOSH 1
  3.  
  4. #include "knl_use.h"
  5. typedef sos_Int Index;
  6. #define make_Index_object make_sos_Int_object
  7. #define make_Index make_sos_Int
  8. class sos_Aggregate;
  9. class sos_Object_Collection;
  10. class sos_Object_sos_Object_Association;
  11. class sos_Cursor;
  12. class sos_Object_List;
  13. class sos_Object_Array;
  14. class sos_Object_sos_Object_Mapping;
  15. class sos_Object_sos_Int_Association;
  16. class sos_Object_sos_Int_Mapping;
  17. class sos_Object_Bag;
  18. class sos_Object_sos_Bool_Association;
  19. class sos_Object_sos_Bool_Mapping;
  20. class sos_Object_Set;
  21. class sos_Node;
  22. class sos_Array_node;
  23. class sos_List_node;
  24. class sos_Map_node;
  25. class sos_Bag_node;
  26. #include "agg_ext.h"
  27. #define _Index_type sos_Id::make(sos_Container::make(15319856),1380)
  28. #define Index_type sos_type_object(_Index_type,sos_Id::make(sos_Container::make(279048),504144))
  29. class sos_Aggregate: public sos_Root_class 
  30. {  friend class _sos_Aggregate;
  31.    class _sos_Aggregate* _ref;
  32. public:
  33.    operator sos_Object ();
  34.    static sos_Aggregate make(sos_Typed_id&);
  35.    static sos_Aggregate make(sos_Typed_id&p,_sos_Aggregate*r){
  36.    sos_Aggregate o; o._tpid = p; o._ref=r; return o;}
  37.    static sos_Aggregate make(sos_Root_class&);
  38.    sos_Offset _size();
  39.    static sos_Aggregate create(sos_Container);
  40.    static sos_Aggregate copy(sos_Aggregate,sos_Container);
  41.    static sos_Aggregate clone(sos_Aggregate,sos_Container);
  42.    void destroy();
  43.    sos_Int hash_value();
  44.    sos_Bool is_empty();
  45.    sos_Int card();
  46.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  47.    void close_cursor(sos_Cursor _p1);
  48.    sos_Cursor duplicate(sos_Cursor _p1);
  49.    sos_Bool is_valid(sos_Cursor _p1);
  50.    void remove_at(sos_Cursor _p1);
  51.    sos_Bool to_first(sos_Cursor _p1);
  52.    sos_Bool to_last(sos_Cursor _p1);
  53.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  54.    sos_Bool has_type(sos_Type _p1);
  55.    sos_Bool isa(sos_Type _p1);
  56.    sos_Bool operator==(sos_Object _p1);
  57.    sos_Bool operator!=(sos_Object _p1);
  58. protected:
  59.    static void local_assign(sos_Aggregate x,sos_Aggregate y);
  60.    static sos_Bool local_equal(sos_Aggregate x,sos_Aggregate y,sos_Eq_kind eq_kind = EQ_STRONG);
  61. public:
  62.    void assign(sos_Object source);
  63.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  64.    void clear();
  65.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  66.    sos_Type type();
  67.    sos_Bool is_some(sos_Type _p1);
  68.    sos_Bool is_value();
  69.    sos_Int size();
  70.    sos_Bool identical(sos_Object _p1);
  71.    sos_Bool like(sos_Object _p1);
  72.    sos_Comp_result compare_ids(sos_Object _p1);
  73. protected:
  74.    static sos_Int local_hash_value(sos_Aggregate x);
  75. };
  76. #define _sos_Aggregate_type sos_Id::make(sos_Container::make(3690836),1448)
  77. #define sos_Aggregate_type sos_type_object(_sos_Aggregate_type,sos_Id::make(sos_Container::make(279048),529560))
  78. class sos_Object_Collection: public sos_Root_class 
  79. {  friend class _sos_Object_Collection;
  80.    class _sos_Object_Collection* _ref;
  81. public:
  82.    operator sos_Object ();
  83.    operator sos_Aggregate ();
  84.    static sos_Object_Collection make(sos_Typed_id&);
  85.    static sos_Object_Collection make(sos_Typed_id&p,_sos_Object_Collection*r){
  86.    sos_Object_Collection o; o._tpid = p; o._ref=r; return o;}
  87.    static sos_Object_Collection make(sos_Root_class&);
  88.    sos_Offset _size();
  89.    static sos_Object_Collection create(sos_Container,sos_Bool based_on_equal = FALSE);
  90.    static sos_Object_Collection copy(sos_Object_Collection,sos_Container);
  91.    static sos_Object_Collection clone(sos_Object_Collection,sos_Container);
  92.    void destroy();
  93.    sos_Int hash_value();
  94.    sos_Bool is_element(sos_Object _p1);
  95.    sos_Object get(sos_Cursor _p1);
  96.    sos_Bool is_empty();
  97.    sos_Int card();
  98.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  99.    void close_cursor(sos_Cursor _p1);
  100.    sos_Cursor duplicate(sos_Cursor _p1);
  101.    sos_Bool is_valid(sos_Cursor _p1);
  102.    void remove_at(sos_Cursor _p1);
  103.    sos_Bool to_first(sos_Cursor _p1);
  104.    sos_Bool to_last(sos_Cursor _p1);
  105.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  106.    sos_Bool has_type(sos_Type _p1);
  107.    sos_Bool isa(sos_Type _p1);
  108.    sos_Bool operator==(sos_Object _p1);
  109.    sos_Bool operator!=(sos_Object _p1);
  110. protected:
  111.    static void local_assign(sos_Object_Collection x,sos_Object_Collection y);
  112.    static sos_Bool local_equal(sos_Object_Collection x,sos_Object_Collection y,sos_Eq_kind eq_kind = EQ_STRONG);
  113. public:
  114.    void assign(sos_Object source);
  115.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  116. protected:
  117.    sos_Bool get_based_on_equal();
  118.    void set_based_on_equal(sos_Bool _p1);
  119. public:
  120.    void clear();
  121.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  122.    sos_Type type();
  123.    sos_Bool is_some(sos_Type _p1);
  124.    sos_Bool is_value();
  125.    sos_Int size();
  126.    sos_Bool identical(sos_Object _p1);
  127.    sos_Bool like(sos_Object _p1);
  128.    sos_Comp_result compare_ids(sos_Object _p1);
  129. protected:
  130.    static sos_Int local_hash_value(sos_Object_Collection x);
  131. };
  132. #define _sos_Object_Collection_type sos_Id::make(sos_Container::make(3690836),13688)
  133. #define sos_Object_Collection_type sos_type_object(_sos_Object_Collection_type,sos_Id::make(sos_Container::make(279048),529560))
  134. class sos_Object_sos_Object_Association: public sos_Root_class 
  135. {  friend class _sos_Object_sos_Object_Association;
  136.    class _sos_Object_sos_Object_Association* _ref;
  137. public:
  138.    operator sos_Object ();
  139.    operator sos_Aggregate ();
  140.    static sos_Object_sos_Object_Association make(sos_Typed_id&);
  141.    static sos_Object_sos_Object_Association make(sos_Typed_id&p,_sos_Object_sos_Object_Association*r){
  142.    sos_Object_sos_Object_Association o; o._tpid = p; o._ref=r; return o;}
  143.    static sos_Object_sos_Object_Association make(sos_Root_class&);
  144.    sos_Offset _size();
  145.    static sos_Object_sos_Object_Association create(sos_Container,sos_Bool role1_based_on_equal = FALSE,sos_Bool role2_based_on_equal = FALSE);
  146.    static sos_Object_sos_Object_Association copy(sos_Object_sos_Object_Association,sos_Container);
  147.    static sos_Object_sos_Object_Association clone(sos_Object_sos_Object_Association,sos_Container);
  148.    void destroy();
  149.    sos_Int hash_value();
  150.    sos_Bool is_role2(sos_Object _p1);
  151.    sos_Object get_role1(sos_Cursor _p1);
  152.    sos_Object get_role2(sos_Cursor _p1);
  153.    sos_Bool is_empty();
  154.    sos_Int card();
  155.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  156.    void close_cursor(sos_Cursor _p1);
  157.    sos_Cursor duplicate(sos_Cursor _p1);
  158.    sos_Bool is_valid(sos_Cursor _p1);
  159.    void remove_at(sos_Cursor _p1);
  160.    sos_Bool to_first(sos_Cursor _p1);
  161.    sos_Bool to_last(sos_Cursor _p1);
  162.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  163.    sos_Bool has_type(sos_Type _p1);
  164.    sos_Bool isa(sos_Type _p1);
  165.    sos_Bool operator==(sos_Object _p1);
  166.    sos_Bool operator!=(sos_Object _p1);
  167. protected:
  168.    static void local_assign(sos_Object_sos_Object_Association x,sos_Object_sos_Object_Association y);
  169.    static sos_Bool local_equal(sos_Object_sos_Object_Association x,sos_Object_sos_Object_Association y,sos_Eq_kind eq_kind = EQ_STRONG);
  170. public:
  171.    void assign(sos_Object source);
  172.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  173.    sos_Bool is_role1(sos_Object _p1);
  174. protected:
  175.    sos_Bool get_role1_based_on_equal();
  176.    void set_role1_based_on_equal(sos_Bool _p1);
  177.    sos_Bool get_role2_based_on_equal();
  178.    void set_role2_based_on_equal(sos_Bool _p1);
  179. public:
  180.    void clear();
  181.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  182.    sos_Type type();
  183.    sos_Bool is_some(sos_Type _p1);
  184.    sos_Bool is_value();
  185.    sos_Int size();
  186.    sos_Bool identical(sos_Object _p1);
  187.    sos_Bool like(sos_Object _p1);
  188.    sos_Comp_result compare_ids(sos_Object _p1);
  189. protected:
  190.    static sos_Int local_hash_value(sos_Object_sos_Object_Association x);
  191. };
  192. #define _sos_Object_sos_Object_Association_type sos_Id::make(sos_Container::make(3690836),23552)
  193. #define sos_Object_sos_Object_Association_type sos_type_object(_sos_Object_sos_Object_Association_type,sos_Id::make(sos_Container::make(279048),529560))
  194. class sos_Cursor: public sos_Root_class 
  195. {  friend class _sos_Cursor;
  196.    class _sos_Cursor* _ref;
  197. public:
  198.    operator sos_Object ();
  199.    static sos_Cursor make(sos_Typed_id&);
  200.    static sos_Cursor make(sos_Typed_id&p,_sos_Cursor*r){
  201.    sos_Cursor o; o._tpid = p; o._ref=r; return o;}
  202.    static sos_Cursor make(sos_Root_class&);
  203.    sos_Offset _size();
  204.    static sos_Cursor create(sos_Container,sos_Aggregate domain);
  205.    static sos_Cursor copy(sos_Cursor,sos_Container);
  206.    static sos_Cursor clone(sos_Cursor,sos_Container);
  207.    void destroy();
  208.    void assign(sos_Object source);
  209.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  210.    sos_Int hash_value();
  211.    sos_Bool defined_for(sos_Aggregate _p1);
  212.    sos_Node get_current();
  213.    void set_current(sos_Node _p1);
  214. private:
  215.    sos_Aggregate get_domain();
  216.    void set_domain(sos_Aggregate _p1);
  217. protected:
  218.    static void local_initialize(sos_Cursor _p1);
  219. public:
  220.    sos_Type type();
  221.    sos_Bool has_type(sos_Type _p1);
  222.    sos_Bool isa(sos_Type _p1);
  223.    sos_Bool is_some(sos_Type _p1);
  224.    sos_Bool is_value();
  225.    sos_Int size();
  226.    sos_Bool identical(sos_Object _p1);
  227.    sos_Bool operator==(sos_Object _p1);
  228.    sos_Bool operator!=(sos_Object _p1);
  229.    sos_Bool like(sos_Object _p1);
  230.    sos_Comp_result compare_ids(sos_Object _p1);
  231. protected:
  232.    static void local_assign(sos_Cursor x,sos_Cursor y);
  233.    static sos_Bool local_equal(sos_Cursor x,sos_Cursor y,sos_Eq_kind eq_kind = EQ_STRONG);
  234.    static sos_Int local_hash_value(sos_Cursor x);
  235. };
  236. #define _sos_Cursor_type sos_Id::make(sos_Container::make(3690836),35032)
  237. #define sos_Cursor_type sos_type_object(_sos_Cursor_type,sos_Id::make(sos_Container::make(279048),529560))
  238. class sos_Object_List: public sos_Root_class 
  239. {  friend class _sos_Object_List;
  240.    class _sos_Object_List* _ref;
  241. public:
  242.    operator sos_Object ();
  243.    operator sos_Aggregate ();
  244.    operator sos_Object_Collection ();
  245.    static sos_Object_List make(sos_Typed_id&);
  246.    static sos_Object_List make(sos_Typed_id&p,_sos_Object_List*r){
  247.    sos_Object_List o; o._tpid = p; o._ref=r; return o;}
  248.    static sos_Object_List make(sos_Root_class&);
  249.    sos_Offset _size();
  250.    static sos_Object_List create(sos_Container,sos_Bool based_on_equal = FALSE);
  251.    static sos_Object_List copy(sos_Object_List,sos_Container);
  252.    static sos_Object_List clone(sos_Object_List,sos_Container);
  253.    void destroy();
  254.    sos_Int hash_value();
  255.    void operator+=(sos_Object_List _p1);
  256.    void insert_after(sos_Cursor _p1,sos_Object _p2);
  257.    void set(sos_Cursor _p1,sos_Object _p2);
  258.    sos_Object get(sos_Cursor _p1);
  259.    void remove_at(sos_Cursor _p1);
  260.    sos_Int card();
  261.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  262.    void close_cursor(sos_Cursor _p1);
  263.    sos_Cursor duplicate(sos_Cursor _p1);
  264.    sos_Bool is_valid(sos_Cursor _p1);
  265.    sos_Bool to_first(sos_Cursor _p1);
  266.    sos_Bool to_last(sos_Cursor _p1);
  267.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  268. private:
  269.    sos_List_node get_first();
  270.    void set_first(sos_List_node _p1);
  271. protected:
  272.    static void local_assign(sos_Object_List _p1,sos_Object _p2);
  273.    static sos_Bool local_equal(sos_Object_List _p1,sos_Object _p2,sos_Eq_kind _p3);
  274. public:
  275.    sos_Bool is_element(sos_Object _p1);
  276.    sos_Bool is_empty();
  277.    sos_Bool has_type(sos_Type _p1);
  278.    sos_Bool isa(sos_Type _p1);
  279.    sos_Bool operator==(sos_Object _p1);
  280.    sos_Bool operator!=(sos_Object _p1);
  281.    void assign(sos_Object source);
  282.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  283.    void append(sos_Object _p1);
  284.    void insert(Index _p1,sos_Object _p2);
  285.    Index current_pos(sos_Cursor _p1);
  286.    void insert_before(sos_Cursor _p1,sos_Object _p2);
  287. protected:
  288.    static void local_finalize(sos_Object_List _p1);
  289.    sos_Bool get_based_on_equal();
  290.    void set_based_on_equal(sos_Bool _p1);
  291. public:
  292.    void clear();
  293.    sos_Type type();
  294.    sos_Int size();
  295.    sos_Bool like(sos_Object _p1);
  296.    void remove(Index _p1);
  297.    sos_Object get_nth(Index _p1);
  298.    void set_nth(Index _p1,sos_Object _p2);
  299.    sos_Bool move_cursor(sos_Cursor _p1,Index _p2);
  300.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  301. private:
  302.    sos_List_node get_last();
  303.    void set_last(sos_List_node _p1);
  304.    sos_Int get_cardinality();
  305.    void set_cardinality(sos_Int _p1);
  306. protected:
  307.    static void local_initialize(sos_Object_List _p1);
  308.    static sos_Int local_hash_value(sos_Object_List _p1);
  309. public:
  310.    sos_Bool is_some(sos_Type _p1);
  311.    sos_Bool is_value();
  312.    sos_Bool identical(sos_Object _p1);
  313.    sos_Comp_result compare_ids(sos_Object _p1);
  314. };
  315. #define _sos_Object_List_type sos_Id::make(sos_Container::make(3690836),43532)
  316. #define sos_Object_List_type sos_type_object(_sos_Object_List_type,sos_Id::make(sos_Container::make(279048),529560))
  317. class sos_Object_Array: public sos_Root_class 
  318. {  friend class _sos_Object_Array;
  319.    class _sos_Object_Array* _ref;
  320. public:
  321.    operator sos_Object ();
  322.    operator sos_Aggregate ();
  323.    operator sos_Object_Collection ();
  324.    static sos_Object_Array make(sos_Typed_id&);
  325.    static sos_Object_Array make(sos_Typed_id&p,_sos_Object_Array*r){
  326.    sos_Object_Array o; o._tpid = p; o._ref=r; return o;}
  327.    static sos_Object_Array make(sos_Root_class&);
  328.    sos_Offset _size();
  329.    static sos_Object_Array create(sos_Container,Index bottom,Index top,sos_Bool based_on_equal = FALSE);
  330.    static sos_Object_Array copy(sos_Object_Array,sos_Container);
  331.    static sos_Object_Array clone(sos_Object_Array,sos_Container);
  332.    void destroy();
  333.    sos_Int hash_value();
  334.    void shift(Index start,sos_Int number);
  335.    sos_Object operator[](Index _p1);
  336.    void set(sos_Cursor _p1,sos_Object _p2);
  337.    sos_Object get(sos_Cursor _p1);
  338.    void remove_at(sos_Cursor _p1);
  339.    sos_Int card();
  340.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  341.    void close_cursor(sos_Cursor _p1);
  342.    sos_Cursor duplicate(sos_Cursor _p1);
  343.    sos_Bool is_valid(sos_Cursor _p1);
  344.    sos_Bool to_first(sos_Cursor _p1);
  345.    sos_Bool to_last(sos_Cursor _p1);
  346.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  347. private:
  348.    Index get_bottom_index();
  349.    void set_bottom_index(Index _p1);
  350. protected:
  351.    static void local_assign(sos_Object_Array _p1,sos_Object _p2);
  352.    static sos_Bool local_equal(sos_Object_Array _p1,sos_Object _p2,sos_Eq_kind _p3);
  353. public:
  354.    sos_Bool is_element(sos_Object _p1);
  355.    sos_Bool is_empty();
  356.    sos_Bool has_type(sos_Type _p1);
  357.    sos_Bool isa(sos_Type _p1);
  358.    sos_Bool operator==(sos_Object _p1);
  359.    sos_Bool operator!=(sos_Object _p1);
  360.    void assign(sos_Object source);
  361.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  362.    void rotate(sos_Int number);
  363.    Index current_pos(sos_Cursor _p1);
  364.    sos_Int size();
  365. private:
  366.    Index get_top_index();
  367.    void set_top_index(Index _p1);
  368.    sos_Offset get_address();
  369.    void set_address(sos_Offset _p1);
  370. protected:
  371.    static void local_finalize(sos_Object_Array _p1);
  372.    sos_Bool get_based_on_equal();
  373.    void set_based_on_equal(sos_Bool _p1);
  374. public:
  375.    void clear();
  376.    sos_Type type();
  377.    sos_Bool like(sos_Object _p1);
  378.    Index get_bottom();
  379.    Index get_top();
  380.    sos_Object get_nth(Index _p1);
  381.    void set_nth(Index _p1,sos_Object _p2);
  382.    sos_Bool move_cursor(sos_Cursor _p1,Index _p2);
  383.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  384. private:
  385.    sos_Int element_size();
  386. protected:
  387.    static void local_initialize(sos_Object_Array _p1);
  388.    static sos_Int local_hash_value(sos_Object_Array _p1);
  389. public:
  390.    sos_Bool is_some(sos_Type _p1);
  391.    sos_Bool is_value();
  392.    sos_Bool identical(sos_Object _p1);
  393.    sos_Comp_result compare_ids(sos_Object _p1);
  394. };
  395. #define _sos_Object_Array_type sos_Id::make(sos_Container::make(3690836),63204)
  396. #define sos_Object_Array_type sos_type_object(_sos_Object_Array_type,sos_Id::make(sos_Container::make(279048),529560))
  397. class sos_Object_sos_Object_Mapping: public sos_Root_class 
  398. {  friend class _sos_Object_sos_Object_Mapping;
  399.    class _sos_Object_sos_Object_Mapping* _ref;
  400. public:
  401.    operator sos_Object ();
  402.    operator sos_Aggregate ();
  403.    operator sos_Object_sos_Object_Association ();
  404.    static sos_Object_sos_Object_Mapping make(sos_Typed_id&);
  405.    static sos_Object_sos_Object_Mapping make(sos_Typed_id&p,_sos_Object_sos_Object_Mapping*r){
  406.    sos_Object_sos_Object_Mapping o; o._tpid = p; o._ref=r; return o;}
  407.    static sos_Object_sos_Object_Mapping make(sos_Root_class&);
  408.    sos_Offset _size();
  409.    static sos_Object_sos_Object_Mapping create(sos_Container,sos_Bool list_cursor = FALSE,sos_Bool key_based_on_equal = FALSE,sos_Bool info_based_on_equal = FALSE);
  410.    static sos_Object_sos_Object_Mapping copy(sos_Object_sos_Object_Mapping,sos_Container);
  411.    static sos_Object_sos_Object_Mapping clone(sos_Object_sos_Object_Mapping,sos_Container);
  412.    void destroy();
  413.    sos_Int hash_value();
  414.    sos_Object operator[](sos_Object _p1);
  415.    sos_Object get_info(sos_Cursor _p1);
  416.    void set_info(sos_Cursor _p1,sos_Object _p2);
  417.    sos_Bool is_role2(sos_Object _p1);
  418.    sos_Int card();
  419.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  420.    void close_cursor(sos_Cursor _p1);
  421.    sos_Cursor duplicate(sos_Cursor _p1);
  422.    sos_Bool to_last(sos_Cursor _p1);
  423.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  424. private:
  425.    sos_Object remove_from_page_list(sos_Container _p1,sos_Bool _p2,sos_Bool _p3,sos_Offset _p4,sos_Int _p5,sos_Object _p6);
  426.    void split_page(sos_Container _p1,sos_Bool _p2,sos_Offset _p3,sos_Char _p4,sos_Int _p5,sos_Int _p6);
  427. protected:
  428.    static void local_assign(sos_Object_sos_Object_Mapping _p1,sos_Object _p2);
  429.    static sos_Bool local_equal(sos_Object_sos_Object_Mapping _p1,sos_Object _p2,sos_Eq_kind _p3);
  430. public:
  431.    sos_Bool is_empty();
  432.    sos_Bool isa(sos_Type _p1);
  433.    sos_Bool operator==(sos_Object _p1);
  434.    sos_Bool operator!=(sos_Object _p1);
  435.    void assign(sos_Object source);
  436.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  437.    sos_Bool is_info(sos_Object _p1);
  438.    void clear();
  439. private:
  440.    void insert_in_page_list(sos_Container _p1,sos_Bool _p2,sos_Bool _p3,sos_Offset _p4,sos_Int _p5,sos_Object _p6,sos_Object _p7,sos_Object _p8,sos_Object _p9);
  441.    void write_succ_pred(sos_Container _p1,sos_Bool _p2,sos_Bool _p3,sos_Object _p4,sos_Bool _p5,sos_Object _p6);
  442.    sos_Object get_last_object();
  443.    void set_last_object(sos_Object _p1);
  444.    sos_Bool get_list_cursor();
  445.    void set_list_cursor(sos_Bool _p1);
  446.    sos_Int get_no_of_pages();
  447.    void set_no_of_pages(sos_Int _p1);
  448.    sos_Int get_global_depth();
  449.    void set_global_depth(sos_Int _p1);
  450. protected:
  451.    static void local_finalize(sos_Object_sos_Object_Mapping _p1);
  452. public:
  453.    void insert_after(sos_Cursor _p1,sos_Object _p2,sos_Object _p3);
  454.    sos_Object get_role1(sos_Cursor _p1);
  455.    sos_Object get_role2(sos_Cursor _p1);
  456.    void remove_at(sos_Cursor _p1);
  457.    sos_Bool is_valid(sos_Cursor _p1);
  458.    sos_Bool to_first(sos_Cursor _p1);
  459. private:
  460.    void init_table();
  461.    sos_Object search_succ_pred(sos_Object _p1,sos_Int _p2);
  462.    sos_Object get_first_object();
  463.    void set_first_object(sos_Object _p1);
  464.    sos_Int get_no_of_page_lists();
  465.    void set_no_of_page_lists(sos_Int _p1);
  466. public:
  467.    sos_Bool has_type(sos_Type _p1);
  468.    sos_Bool is_key(sos_Object _p1);
  469.    void remove(sos_Object _p1);
  470.    sos_Object get_key(sos_Cursor _p1);
  471.    void move_cursor(sos_Cursor _p1,sos_Object _p2);
  472.    sos_Bool is_role1(sos_Object _p1);
  473.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  474. private:
  475.    sos_Bool assemble_page(sos_Offset _p1,sos_Char _p2,sos_Int _p3);
  476.    sos_Int get_cardinality();
  477.    void set_cardinality(sos_Int _p1);
  478.    sos_Int get_ht_entries();
  479.    void set_ht_entries(sos_Int _p1);
  480. protected:
  481.    static void local_initialize(sos_Object_sos_Object_Mapping _p1);
  482.    static sos_Int local_hash_value(sos_Object_sos_Object_Mapping _p1);
  483. public:
  484.    sos_Bool is_some(sos_Type _p1);
  485.    sos_Bool is_value();
  486.    sos_Bool identical(sos_Object _p1);
  487.    sos_Comp_result compare_ids(sos_Object _p1);
  488.    void insert(sos_Object _p1,sos_Object _p2);
  489.    void insert_before(sos_Cursor _p1,sos_Object _p2,sos_Object _p3);
  490.    sos_Int size();
  491. private:
  492.    void increase_hash_table();
  493.    void decrease_hash_table();
  494.    void insert_in_list(sos_Object _p1,sos_Object _p2,sos_Object _p3,sos_Object _p4);
  495.    sos_Offset get_no_of_pages_offset();
  496.    void set_no_of_pages_offset(sos_Offset _p1);
  497.    sos_Int get_ht_offset();
  498.    void set_ht_offset(sos_Int _p1);
  499. protected:
  500.    sos_Bool get_role1_based_on_equal();
  501.    void set_role1_based_on_equal(sos_Bool _p1);
  502.    sos_Bool get_role2_based_on_equal();
  503.    void set_role2_based_on_equal(sos_Bool _p1);
  504. public:
  505.    sos_Type type();
  506.    sos_Bool like(sos_Object _p1);
  507. };
  508. #define _sos_Object_sos_Object_Mapping_type sos_Id::make(sos_Container::make(3690836),83612)
  509. #define sos_Object_sos_Object_Mapping_type sos_type_object(_sos_Object_sos_Object_Mapping_type,sos_Id::make(sos_Container::make(279048),529560))
  510. class sos_Object_sos_Int_Association: public sos_Root_class 
  511. {  friend class _sos_Object_sos_Object_Association;
  512.    class _sos_Object_sos_Object_Association* _ref;
  513. public:
  514.    operator sos_Object ();
  515.    operator sos_Aggregate ();
  516.    operator sos_Object_sos_Object_Association ();
  517.    static sos_Object_sos_Int_Association make(sos_Typed_id&);
  518.    static sos_Object_sos_Int_Association make(sos_Typed_id&p,_sos_Object_sos_Object_Association*r){
  519.    sos_Object_sos_Int_Association o; o._tpid = p; o._ref=r; return o;}
  520.    static sos_Object_sos_Int_Association make(sos_Root_class&);
  521.    sos_Offset _size();
  522.    static sos_Object_sos_Int_Association create(sos_Container,sos_Bool role1_based_on_equal = FALSE,sos_Bool role2_based_on_equal = FALSE);
  523.    static sos_Object_sos_Int_Association copy(sos_Object_sos_Int_Association,sos_Container);
  524.    static sos_Object_sos_Int_Association clone(sos_Object_sos_Int_Association,sos_Container);
  525.    void destroy();
  526.    sos_Int hash_value();
  527.    sos_Bool is_role2(sos_Int _p1);
  528.    sos_Object get_role1(sos_Cursor _p1);
  529.    sos_Int get_role2(sos_Cursor _p1);
  530.    sos_Bool is_empty();
  531.    sos_Int card();
  532.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  533.    void close_cursor(sos_Cursor _p1);
  534.    sos_Cursor duplicate(sos_Cursor _p1);
  535.    sos_Bool is_valid(sos_Cursor _p1);
  536.    void remove_at(sos_Cursor _p1);
  537.    sos_Bool to_first(sos_Cursor _p1);
  538.    sos_Bool to_last(sos_Cursor _p1);
  539.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  540.    sos_Bool has_type(sos_Type _p1);
  541.    sos_Bool isa(sos_Type _p1);
  542.    sos_Bool operator==(sos_Object _p1);
  543.    sos_Bool operator!=(sos_Object _p1);
  544.    void assign(sos_Object source);
  545.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  546.    sos_Bool is_role1(sos_Object _p1);
  547.    void clear();
  548.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  549.    sos_Type type();
  550.    sos_Bool is_some(sos_Type _p1);
  551.    sos_Bool is_value();
  552.    sos_Int size();
  553.    sos_Bool identical(sos_Object _p1);
  554.    sos_Bool like(sos_Object _p1);
  555.    sos_Comp_result compare_ids(sos_Object _p1);
  556. };
  557. #define _sos_Object_sos_Int_Association_type sos_Id::make(sos_Container::make(3690836),134144)
  558. #define sos_Object_sos_Int_Association_type sos_type_object(_sos_Object_sos_Int_Association_type,sos_Id::make(sos_Container::make(279048),529560))
  559. class sos_Object_sos_Int_Mapping: public sos_Root_class 
  560. {  friend class _sos_Object_sos_Object_Mapping;
  561.    class _sos_Object_sos_Object_Mapping* _ref;
  562. public:
  563.    operator sos_Object ();
  564.    operator sos_Aggregate ();
  565.    operator sos_Object_sos_Int_Association ();
  566.    operator sos_Object_sos_Object_Association ();
  567.    operator sos_Object_sos_Object_Mapping ();
  568.    static sos_Object_sos_Int_Mapping make(sos_Typed_id&);
  569.    static sos_Object_sos_Int_Mapping make(sos_Typed_id&p,_sos_Object_sos_Object_Mapping*r){
  570.    sos_Object_sos_Int_Mapping o; o._tpid = p; o._ref=r; return o;}
  571.    static sos_Object_sos_Int_Mapping make(sos_Root_class&);
  572.    sos_Offset _size();
  573.    static sos_Object_sos_Int_Mapping create(sos_Container,sos_Bool list_cursor = FALSE,sos_Bool key_based_on_equal = FALSE,sos_Bool info_based_on_equal = FALSE);
  574.    static sos_Object_sos_Int_Mapping copy(sos_Object_sos_Int_Mapping,sos_Container);
  575.    static sos_Object_sos_Int_Mapping clone(sos_Object_sos_Int_Mapping,sos_Container);
  576.    void destroy();
  577.    sos_Int hash_value();
  578.    sos_Int operator[](sos_Object _p1);
  579.    sos_Int get_info(sos_Cursor _p1);
  580.    void set_info(sos_Cursor _p1,sos_Int _p2);
  581.    sos_Bool is_role2(sos_Int _p1);
  582.    sos_Int card();
  583.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  584.    void close_cursor(sos_Cursor _p1);
  585.    sos_Cursor duplicate(sos_Cursor _p1);
  586.    sos_Bool to_last(sos_Cursor _p1);
  587.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  588.    sos_Bool is_empty();
  589.    sos_Bool isa(sos_Type _p1);
  590.    sos_Bool operator==(sos_Object _p1);
  591.    sos_Bool operator!=(sos_Object _p1);
  592.    void assign(sos_Object source);
  593.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  594.    sos_Bool is_info(sos_Int _p1);
  595.    void clear();
  596.    void insert_after(sos_Cursor _p1,sos_Object _p2,sos_Int _p3);
  597.    sos_Object get_role1(sos_Cursor _p1);
  598.    sos_Int get_role2(sos_Cursor _p1);
  599.    void remove_at(sos_Cursor _p1);
  600.    sos_Bool is_valid(sos_Cursor _p1);
  601.    sos_Bool to_first(sos_Cursor _p1);
  602.    sos_Bool has_type(sos_Type _p1);
  603.    sos_Bool is_key(sos_Object _p1);
  604.    void remove(sos_Object _p1);
  605.    sos_Object get_key(sos_Cursor _p1);
  606.    void move_cursor(sos_Cursor _p1,sos_Object _p2);
  607.    sos_Bool is_role1(sos_Object _p1);
  608.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  609.    sos_Bool is_some(sos_Type _p1);
  610.    sos_Bool is_value();
  611.    sos_Bool identical(sos_Object _p1);
  612.    sos_Comp_result compare_ids(sos_Object _p1);
  613.    void insert(sos_Object _p1,sos_Int _p2);
  614.    void insert_before(sos_Cursor _p1,sos_Object _p2,sos_Int _p3);
  615.    sos_Int size();
  616.    sos_Type type();
  617.    sos_Bool like(sos_Object _p1);
  618. };
  619. #define _sos_Object_sos_Int_Mapping_type sos_Id::make(sos_Container::make(3690836),133748)
  620. #define sos_Object_sos_Int_Mapping_type sos_type_object(_sos_Object_sos_Int_Mapping_type,sos_Id::make(sos_Container::make(279048),529560))
  621. class sos_Object_Bag: public sos_Root_class 
  622. {  friend class _sos_Object_Bag;
  623.    class _sos_Object_Bag* _ref;
  624. public:
  625.    operator sos_Object ();
  626.    operator sos_Aggregate ();
  627.    operator sos_Object_Collection ();
  628.    static sos_Object_Bag make(sos_Typed_id&);
  629.    static sos_Object_Bag make(sos_Typed_id&p,_sos_Object_Bag*r){
  630.    sos_Object_Bag o; o._tpid = p; o._ref=r; return o;}
  631.    static sos_Object_Bag make(sos_Root_class&);
  632.    sos_Offset _size();
  633.    static sos_Object_Bag create(sos_Container,sos_Bool list_cursor = TRUE,sos_Bool based_on_equal = FALSE);
  634.    static sos_Object_Bag copy(sos_Object_Bag,sos_Container);
  635.    static sos_Object_Bag clone(sos_Object_Bag,sos_Container);
  636.    void destroy();
  637.    sos_Int hash_value();
  638.    void operator+=(sos_Object_Bag _p1);
  639.    void operator-=(sos_Object_Bag _p1);
  640.    void operator*=(sos_Object_Bag _p1);
  641.    sos_Bool operator<(sos_Object_Bag _p1);
  642.    sos_Bool operator<=(sos_Object_Bag _p1);
  643.    sos_Bool operator>(sos_Object_Bag _p1);
  644.    sos_Bool operator>=(sos_Object_Bag _p1);
  645.    void max_union(sos_Object_Bag _p1);
  646.    sos_Int entity_occurs(sos_Cursor _p1);
  647.    sos_Bool to_diff_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  648.    sos_Bool is_element(sos_Object _p1);
  649.    sos_Object get(sos_Cursor _p1);
  650.    sos_Int card();
  651.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  652.    void close_cursor(sos_Cursor _p1);
  653.    sos_Cursor duplicate(sos_Cursor _p1);
  654.    sos_Bool to_last(sos_Cursor _p1);
  655.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  656. protected:
  657.    static void local_assign(sos_Object_Bag _p1,sos_Object _p2);
  658.    static sos_Bool local_equal(sos_Object_Bag _p1,sos_Object _p2,sos_Eq_kind _p3);
  659. public:
  660.    sos_Bool is_empty();
  661.    sos_Bool isa(sos_Type _p1);
  662.    sos_Bool operator==(sos_Object _p1);
  663.    sos_Bool operator!=(sos_Object _p1);
  664.    void assign(sos_Object source);
  665.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  666.    sos_Int insert(sos_Object _p1);
  667.    void eliminate(sos_Object _p1);
  668.    void clear();
  669. private:
  670.    sos_Bool get_list_cursor();
  671.    void set_list_cursor(sos_Bool _p1);
  672. protected:
  673.    static void local_finalize(sos_Object_Bag _p1);
  674.    sos_Bool get_based_on_equal();
  675.    void set_based_on_equal(sos_Bool _p1);
  676. public:
  677.    sos_Type type();
  678.    sos_Int size();
  679.    sos_Bool like(sos_Object _p1);
  680.    void remove_at(sos_Cursor _p1);
  681.    sos_Bool is_valid(sos_Cursor _p1);
  682.    sos_Bool to_first(sos_Cursor _p1);
  683. private:
  684.    void search_succ_pred(sos_Bag_node _p1,Index _p2,sos_Object& _p3,sos_Int& _p4,sos_Int& _p5);
  685.    sos_Int get_no_of_elements(sos_Object_sos_Int_Mapping _p1,sos_Object _p2);
  686.    sos_Int set_no_of_elements(sos_Object_sos_Int_Mapping _p1,sos_Object _p2,sos_Int _p3,sos_Int _p4);
  687. public:
  688.    sos_Bool has_type(sos_Type _p1);
  689.    sos_Int remove(sos_Object _p1);
  690.    sos_Int occurrences(sos_Object _p1);
  691.    sos_Bool to_diff_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  692.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  693. private:
  694.    void write_current(sos_Cursor _p1,sos_Object _p2,sos_Int _p3,sos_Int _p4);
  695.    sos_Int get_cardinality();
  696.    void set_cardinality(sos_Int _p1);
  697.    sos_Object_sos_Int_Mapping get_m();
  698.    void set_m(sos_Object_sos_Int_Mapping _p1);
  699. protected:
  700.    static void local_initialize(sos_Object_Bag _p1);
  701.    static sos_Int local_hash_value(sos_Object_Bag _p1);
  702. public:
  703.    sos_Bool is_some(sos_Type _p1);
  704.    sos_Bool is_value();
  705.    sos_Bool identical(sos_Object _p1);
  706.    sos_Comp_result compare_ids(sos_Object _p1);
  707. };
  708. #define _sos_Object_Bag_type sos_Id::make(sos_Container::make(3690836),119172)
  709. #define sos_Object_Bag_type sos_type_object(_sos_Object_Bag_type,sos_Id::make(sos_Container::make(279048),529560))
  710. class sos_Object_sos_Bool_Association: public sos_Root_class 
  711. {  friend class _sos_Object_sos_Object_Association;
  712.    class _sos_Object_sos_Object_Association* _ref;
  713. public:
  714.    operator sos_Object ();
  715.    operator sos_Aggregate ();
  716.    operator sos_Object_sos_Object_Association ();
  717.    static sos_Object_sos_Bool_Association make(sos_Typed_id&);
  718.    static sos_Object_sos_Bool_Association make(sos_Typed_id&p,_sos_Object_sos_Object_Association*r){
  719.    sos_Object_sos_Bool_Association o; o._tpid = p; o._ref=r; return o;}
  720.    static sos_Object_sos_Bool_Association make(sos_Root_class&);
  721.    sos_Offset _size();
  722.    static sos_Object_sos_Bool_Association create(sos_Container,sos_Bool role1_based_on_equal = FALSE,sos_Bool role2_based_on_equal = FALSE);
  723.    static sos_Object_sos_Bool_Association copy(sos_Object_sos_Bool_Association,sos_Container);
  724.    static sos_Object_sos_Bool_Association clone(sos_Object_sos_Bool_Association,sos_Container);
  725.    void destroy();
  726.    sos_Int hash_value();
  727.    sos_Bool is_role2(sos_Bool _p1);
  728.    sos_Object get_role1(sos_Cursor _p1);
  729.    sos_Bool get_role2(sos_Cursor _p1);
  730.    sos_Bool is_empty();
  731.    sos_Int card();
  732.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  733.    void close_cursor(sos_Cursor _p1);
  734.    sos_Cursor duplicate(sos_Cursor _p1);
  735.    sos_Bool is_valid(sos_Cursor _p1);
  736.    void remove_at(sos_Cursor _p1);
  737.    sos_Bool to_first(sos_Cursor _p1);
  738.    sos_Bool to_last(sos_Cursor _p1);
  739.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  740.    sos_Bool has_type(sos_Type _p1);
  741.    sos_Bool isa(sos_Type _p1);
  742.    sos_Bool operator==(sos_Object _p1);
  743.    sos_Bool operator!=(sos_Object _p1);
  744.    void assign(sos_Object source);
  745.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  746.    sos_Bool is_role1(sos_Object _p1);
  747.    void clear();
  748.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  749.    sos_Type type();
  750.    sos_Bool is_some(sos_Type _p1);
  751.    sos_Bool is_value();
  752.    sos_Int size();
  753.    sos_Bool identical(sos_Object _p1);
  754.    sos_Bool like(sos_Object _p1);
  755.    sos_Comp_result compare_ids(sos_Object _p1);
  756. };
  757. #define _sos_Object_sos_Bool_Association_type sos_Id::make(sos_Container::make(3690836),188508)
  758. #define sos_Object_sos_Bool_Association_type sos_type_object(_sos_Object_sos_Bool_Association_type,sos_Id::make(sos_Container::make(279048),529560))
  759. class sos_Object_sos_Bool_Mapping: public sos_Root_class 
  760. {  friend class _sos_Object_sos_Object_Mapping;
  761.    class _sos_Object_sos_Object_Mapping* _ref;
  762. public:
  763.    operator sos_Object ();
  764.    operator sos_Aggregate ();
  765.    operator sos_Object_sos_Bool_Association ();
  766.    operator sos_Object_sos_Object_Association ();
  767.    operator sos_Object_sos_Object_Mapping ();
  768.    static sos_Object_sos_Bool_Mapping make(sos_Typed_id&);
  769.    static sos_Object_sos_Bool_Mapping make(sos_Typed_id&p,_sos_Object_sos_Object_Mapping*r){
  770.    sos_Object_sos_Bool_Mapping o; o._tpid = p; o._ref=r; return o;}
  771.    static sos_Object_sos_Bool_Mapping make(sos_Root_class&);
  772.    sos_Offset _size();
  773.    static sos_Object_sos_Bool_Mapping create(sos_Container,sos_Bool list_cursor = FALSE,sos_Bool key_based_on_equal = FALSE,sos_Bool info_based_on_equal = FALSE);
  774.    static sos_Object_sos_Bool_Mapping copy(sos_Object_sos_Bool_Mapping,sos_Container);
  775.    static sos_Object_sos_Bool_Mapping clone(sos_Object_sos_Bool_Mapping,sos_Container);
  776.    void destroy();
  777.    sos_Int hash_value();
  778.    sos_Bool operator[](sos_Object _p1);
  779.    sos_Bool get_info(sos_Cursor _p1);
  780.    void set_info(sos_Cursor _p1,sos_Bool _p2);
  781.    sos_Bool is_role2(sos_Bool _p1);
  782.    sos_Int card();
  783.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  784.    void close_cursor(sos_Cursor _p1);
  785.    sos_Cursor duplicate(sos_Cursor _p1);
  786.    sos_Bool to_last(sos_Cursor _p1);
  787.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  788.    sos_Bool is_empty();
  789.    sos_Bool isa(sos_Type _p1);
  790.    sos_Bool operator==(sos_Object _p1);
  791.    sos_Bool operator!=(sos_Object _p1);
  792.    void assign(sos_Object source);
  793.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  794.    sos_Bool is_info(sos_Bool _p1);
  795.    void clear();
  796.    void insert_after(sos_Cursor _p1,sos_Object _p2,sos_Bool _p3);
  797.    sos_Object get_role1(sos_Cursor _p1);
  798.    sos_Bool get_role2(sos_Cursor _p1);
  799.    void remove_at(sos_Cursor _p1);
  800.    sos_Bool is_valid(sos_Cursor _p1);
  801.    sos_Bool to_first(sos_Cursor _p1);
  802.    sos_Bool has_type(sos_Type _p1);
  803.    sos_Bool is_key(sos_Object _p1);
  804.    void remove(sos_Object _p1);
  805.    sos_Object get_key(sos_Cursor _p1);
  806.    void move_cursor(sos_Cursor _p1,sos_Object _p2);
  807.    sos_Bool is_role1(sos_Object _p1);
  808.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  809.    sos_Bool is_some(sos_Type _p1);
  810.    sos_Bool is_value();
  811.    sos_Bool identical(sos_Object _p1);
  812.    sos_Comp_result compare_ids(sos_Object _p1);
  813.    void insert(sos_Object _p1,sos_Bool _p2);
  814.    void insert_before(sos_Cursor _p1,sos_Object _p2,sos_Bool _p3);
  815.    sos_Int size();
  816.    sos_Type type();
  817.    sos_Bool like(sos_Object _p1);
  818. };
  819. #define _sos_Object_sos_Bool_Mapping_type sos_Id::make(sos_Container::make(3690836),188120)
  820. #define sos_Object_sos_Bool_Mapping_type sos_type_object(_sos_Object_sos_Bool_Mapping_type,sos_Id::make(sos_Container::make(279048),529560))
  821. class sos_Object_Set: public sos_Root_class 
  822. {  friend class _sos_Object_Set;
  823.    class _sos_Object_Set* _ref;
  824. public:
  825.    operator sos_Object ();
  826.    operator sos_Aggregate ();
  827.    operator sos_Object_Collection ();
  828.    static sos_Object_Set make(sos_Typed_id&);
  829.    static sos_Object_Set make(sos_Typed_id&p,_sos_Object_Set*r){
  830.    sos_Object_Set o; o._tpid = p; o._ref=r; return o;}
  831.    static sos_Object_Set make(sos_Root_class&);
  832.    sos_Offset _size();
  833.    static sos_Object_Set create(sos_Container,sos_Bool list_cursor = TRUE,sos_Bool based_on_equal = FALSE);
  834.    static sos_Object_Set copy(sos_Object_Set,sos_Container);
  835.    static sos_Object_Set clone(sos_Object_Set,sos_Container);
  836.    void destroy();
  837.    sos_Int hash_value();
  838.    void operator+=(sos_Object_Set _p1);
  839.    void operator-=(sos_Object_Set _p1);
  840.    void operator*=(sos_Object_Set _p1);
  841.    sos_Bool operator<(sos_Object_Set _p1);
  842.    sos_Bool operator<=(sos_Object_Set _p1);
  843.    sos_Bool operator>(sos_Object_Set _p1);
  844.    sos_Bool operator>=(sos_Object_Set _p1);
  845.    sos_Bool is_element(sos_Object _p1);
  846.    sos_Object get(sos_Cursor _p1);
  847.    void remove_at(sos_Cursor _p1);
  848.    sos_Int card();
  849.    sos_Cursor open_cursor(sos_Container _p1 = TEMP_CONTAINER);
  850.    void close_cursor(sos_Cursor _p1);
  851.    sos_Cursor duplicate(sos_Cursor _p1);
  852.    sos_Bool is_valid(sos_Cursor _p1);
  853.    sos_Bool to_first(sos_Cursor _p1);
  854.    sos_Bool to_last(sos_Cursor _p1);
  855.    sos_Bool to_pred(sos_Cursor _p1,sos_Int _p2 = 1);
  856. protected:
  857.    static void local_assign(sos_Object_Set _p1,sos_Object _p2);
  858.    static sos_Bool local_equal(sos_Object_Set _p1,sos_Object _p2,sos_Eq_kind _p3);
  859. public:
  860.    sos_Bool is_empty();
  861.    sos_Bool has_type(sos_Type _p1);
  862.    sos_Bool isa(sos_Type _p1);
  863.    sos_Bool operator==(sos_Object _p1);
  864.    sos_Bool operator!=(sos_Object _p1);
  865.    void assign(sos_Object source);
  866.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  867.    void insert(sos_Object _p1);
  868.    void remove(sos_Object _p1);
  869.    void clear();
  870.    sos_Bool to_succ(sos_Cursor _p1,sos_Int _p2 = 1);
  871. private:
  872.    sos_Bool get_list_cursor();
  873.    void set_list_cursor(sos_Bool _p1);
  874.    sos_Object_sos_Bool_Mapping get_m();
  875.    void set_m(sos_Object_sos_Bool_Mapping _p1);
  876. protected:
  877.    static void local_initialize(sos_Object_Set _p1);
  878.    static void local_finalize(sos_Object_Set _p1);
  879.    static sos_Int local_hash_value(sos_Object_Set _p1);
  880.    sos_Bool get_based_on_equal();
  881.    void set_based_on_equal(sos_Bool _p1);
  882. public:
  883.    sos_Type type();
  884.    sos_Bool is_some(sos_Type _p1);
  885.    sos_Bool is_value();
  886.    sos_Int size();
  887.    sos_Bool identical(sos_Object _p1);
  888.    sos_Bool like(sos_Object _p1);
  889.    sos_Comp_result compare_ids(sos_Object _p1);
  890. };
  891. #define _sos_Object_Set_type sos_Id::make(sos_Container::make(3690836),175400)
  892. #define sos_Object_Set_type sos_type_object(_sos_Object_Set_type,sos_Id::make(sos_Container::make(279048),529560))
  893. class sos_Node: public sos_Root_class 
  894. {  friend class _sos_Node;
  895.    class _sos_Node* _ref;
  896. public:
  897.    operator sos_Object ();
  898.    static sos_Node make(sos_Typed_id&);
  899.    static sos_Node make(sos_Typed_id&p,_sos_Node*r){
  900.    sos_Node o; o._tpid = p; o._ref=r; return o;}
  901.    static sos_Node make(sos_Root_class&);
  902.    sos_Offset _size();
  903.    static sos_Node create(sos_Container);
  904.    static sos_Node copy(sos_Node,sos_Container);
  905.    static sos_Node clone(sos_Node,sos_Container);
  906.    void destroy();
  907.    void assign(sos_Object source);
  908.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  909.    sos_Int hash_value();
  910.    sos_Type type();
  911.    sos_Bool has_type(sos_Type _p1);
  912.    sos_Bool isa(sos_Type _p1);
  913.    sos_Bool is_some(sos_Type _p1);
  914.    sos_Bool is_value();
  915.    sos_Int size();
  916.    sos_Bool identical(sos_Object _p1);
  917.    sos_Bool operator==(sos_Object _p1);
  918.    sos_Bool operator!=(sos_Object _p1);
  919.    sos_Bool like(sos_Object _p1);
  920.    sos_Comp_result compare_ids(sos_Object _p1);
  921. protected:
  922.    static void local_assign(sos_Node x,sos_Node y);
  923.    static sos_Bool local_equal(sos_Node x,sos_Node y,sos_Eq_kind eq_kind = EQ_STRONG);
  924.    static sos_Int local_hash_value(sos_Node x);
  925. };
  926. #define _sos_Node_type sos_Id::make(sos_Container::make(3690836),224068)
  927. #define sos_Node_type sos_type_object(_sos_Node_type,sos_Id::make(sos_Container::make(279048),529560))
  928. class sos_Array_node: public sos_Root_class 
  929. {  friend class _sos_Array_node;
  930.    class _sos_Array_node* _ref;
  931. public:
  932.    operator sos_Object ();
  933.    operator sos_Node ();
  934.    friend class _sos_Object_Array;
  935.    static sos_Array_node make(sos_Typed_id&);
  936.    static sos_Array_node make(sos_Typed_id&p,_sos_Array_node*r){
  937.    sos_Array_node o; o._tpid = p; o._ref=r; return o;}
  938.    static sos_Array_node make(sos_Root_class&);
  939.    sos_Offset _size();
  940.    static sos_Array_node create(sos_Container);
  941.    static sos_Array_node copy(sos_Array_node,sos_Container);
  942.    static sos_Array_node clone(sos_Array_node,sos_Container);
  943.    void destroy();
  944.    void assign(sos_Object source);
  945.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  946.    sos_Int hash_value();
  947. private:
  948.    Index get_index();
  949.    void set_index(Index _p1);
  950. public:
  951.    sos_Type type();
  952.    sos_Bool has_type(sos_Type _p1);
  953.    sos_Bool isa(sos_Type _p1);
  954.    sos_Bool is_some(sos_Type _p1);
  955.    sos_Bool is_value();
  956.    sos_Int size();
  957.    sos_Bool identical(sos_Object _p1);
  958.    sos_Bool operator==(sos_Object _p1);
  959.    sos_Bool operator!=(sos_Object _p1);
  960.    sos_Bool like(sos_Object _p1);
  961.    sos_Comp_result compare_ids(sos_Object _p1);
  962. protected:
  963.    static void local_assign(sos_Array_node x,sos_Array_node y);
  964.    static sos_Bool local_equal(sos_Array_node x,sos_Array_node y,sos_Eq_kind eq_kind = EQ_STRONG);
  965.    static sos_Int local_hash_value(sos_Array_node x);
  966. };
  967. #define _sos_Array_node_type sos_Id::make(sos_Container::make(3690836),229992)
  968. #define sos_Array_node_type sos_type_object(_sos_Array_node_type,sos_Id::make(sos_Container::make(279048),529560))
  969. class sos_List_node: public sos_Root_class 
  970. {  friend class _sos_List_node;
  971.    class _sos_List_node* _ref;
  972. public:
  973.    operator sos_Object ();
  974.    operator sos_Node ();
  975.    friend class _sos_Object_List;
  976.    static sos_List_node make(sos_Typed_id&);
  977.    static sos_List_node make(sos_Typed_id&p,_sos_List_node*r){
  978.    sos_List_node o; o._tpid = p; o._ref=r; return o;}
  979.    static sos_List_node make(sos_Root_class&);
  980.    sos_Offset _size();
  981.    static sos_List_node create(sos_Container);
  982.    static sos_List_node copy(sos_List_node,sos_Container);
  983.    static sos_List_node clone(sos_List_node,sos_Container);
  984.    void destroy();
  985.    sos_Int hash_value();
  986. private:
  987.    void insert_after(sos_List_node _p1);
  988.    sos_List_node pred(sos_Int steps = 1);
  989.    sos_List_node get_succ();
  990.    void set_succ(sos_List_node _p1);
  991. public:
  992.    sos_Bool has_type(sos_Type _p1);
  993.    sos_Bool isa(sos_Type _p1);
  994.    sos_Bool operator==(sos_Object _p1);
  995.    sos_Bool operator!=(sos_Object _p1);
  996. protected:
  997.    static void local_assign(sos_List_node x,sos_List_node y);
  998.    static sos_Bool local_equal(sos_List_node x,sos_List_node y,sos_Eq_kind eq_kind = EQ_STRONG);
  999. public:
  1000.    void assign(sos_Object source);
  1001.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  1002. private:
  1003.    void insert_before(sos_List_node _p1);
  1004.    void remove();
  1005.    sos_List_node succ(sos_Int steps = 1);
  1006.    sos_List_node get_pred();
  1007.    void set_pred(sos_List_node _p1);
  1008.    sos_Object get_val();
  1009.    void set_val(sos_Object _p1);
  1010. public:
  1011.    sos_Type type();
  1012.    sos_Bool is_some(sos_Type _p1);
  1013.    sos_Bool is_value();
  1014.    sos_Int size();
  1015.    sos_Bool identical(sos_Object _p1);
  1016.    sos_Bool like(sos_Object _p1);
  1017.    sos_Comp_result compare_ids(sos_Object _p1);
  1018. protected:
  1019.    static sos_Int local_hash_value(sos_List_node x);
  1020. };
  1021. #define _sos_List_node_type sos_Id::make(sos_Container::make(3690836),236988)
  1022. #define sos_List_node_type sos_type_object(_sos_List_node_type,sos_Id::make(sos_Container::make(279048),529560))
  1023. class sos_Map_node: public sos_Root_class 
  1024. {  friend class _sos_Map_node;
  1025.    class _sos_Map_node* _ref;
  1026. public:
  1027.    operator sos_Object ();
  1028.    operator sos_Node ();
  1029.    friend class _sos_Object_sos_Object_Mapping;
  1030.    static sos_Map_node make(sos_Typed_id&);
  1031.    static sos_Map_node make(sos_Typed_id&p,_sos_Map_node*r){
  1032.    sos_Map_node o; o._tpid = p; o._ref=r; return o;}
  1033.    static sos_Map_node make(sos_Root_class&);
  1034.    sos_Offset _size();
  1035.    static sos_Map_node create(sos_Container);
  1036.    static sos_Map_node copy(sos_Map_node,sos_Container);
  1037.    static sos_Map_node clone(sos_Map_node,sos_Container);
  1038.    void destroy();
  1039.    void assign(sos_Object source);
  1040.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  1041.    sos_Int hash_value();
  1042. protected:
  1043.    sos_Object get_key_val();
  1044.    void set_key_val(sos_Object _p1);
  1045. public:
  1046.    sos_Type type();
  1047.    sos_Bool has_type(sos_Type _p1);
  1048.    sos_Bool isa(sos_Type _p1);
  1049.    sos_Bool is_some(sos_Type _p1);
  1050.    sos_Bool is_value();
  1051.    sos_Int size();
  1052.    sos_Bool identical(sos_Object _p1);
  1053.    sos_Bool operator==(sos_Object _p1);
  1054.    sos_Bool operator!=(sos_Object _p1);
  1055.    sos_Bool like(sos_Object _p1);
  1056.    sos_Comp_result compare_ids(sos_Object _p1);
  1057. protected:
  1058.    static void local_assign(sos_Map_node x,sos_Map_node y);
  1059.    static sos_Bool local_equal(sos_Map_node x,sos_Map_node y,sos_Eq_kind eq_kind = EQ_STRONG);
  1060.    static sos_Int local_hash_value(sos_Map_node x);
  1061. };
  1062. #define _sos_Map_node_type sos_Id::make(sos_Container::make(3690836),247808)
  1063. #define sos_Map_node_type sos_type_object(_sos_Map_node_type,sos_Id::make(sos_Container::make(279048),529560))
  1064. class sos_Bag_node: public sos_Root_class 
  1065. {  friend class _sos_Bag_node;
  1066.    class _sos_Bag_node* _ref;
  1067. public:
  1068.    operator sos_Object ();
  1069.    operator sos_Node ();
  1070.    operator sos_Map_node ();
  1071.    friend class _sos_Object_Bag;
  1072.    static sos_Bag_node make(sos_Typed_id&);
  1073.    static sos_Bag_node make(sos_Typed_id&p,_sos_Bag_node*r){
  1074.    sos_Bag_node o; o._tpid = p; o._ref=r; return o;}
  1075.    static sos_Bag_node make(sos_Root_class&);
  1076.    sos_Offset _size();
  1077.    static sos_Bag_node create(sos_Container);
  1078.    static sos_Bag_node copy(sos_Bag_node,sos_Container);
  1079.    static sos_Bag_node clone(sos_Bag_node,sos_Container);
  1080.    void destroy();
  1081.    void assign(sos_Object source);
  1082.    sos_Bool equal(sos_Object o,sos_Eq_kind eq_kind = EQ_STRONG);
  1083.    sos_Int hash_value();
  1084. private:
  1085.    sos_Int get_tag_no();
  1086.    void set_tag_no(sos_Int _p1);
  1087.    sos_Int get_tag_max();
  1088.    void set_tag_max(sos_Int _p1);
  1089. protected:
  1090.    sos_Object get_key_val();
  1091.    void set_key_val(sos_Object _p1);
  1092. public:
  1093.    sos_Type type();
  1094.    sos_Bool has_type(sos_Type _p1);
  1095.    sos_Bool isa(sos_Type _p1);
  1096.    sos_Bool is_some(sos_Type _p1);
  1097.    sos_Bool is_value();
  1098.    sos_Int size();
  1099.    sos_Bool identical(sos_Object _p1);
  1100.    sos_Bool operator==(sos_Object _p1);
  1101.    sos_Bool operator!=(sos_Object _p1);
  1102.    sos_Bool like(sos_Object _p1);
  1103.    sos_Comp_result compare_ids(sos_Object _p1);
  1104. protected:
  1105.    static void local_assign(sos_Bag_node x,sos_Bag_node y);
  1106.    static sos_Bool local_equal(sos_Bag_node x,sos_Bag_node y,sos_Eq_kind eq_kind = EQ_STRONG);
  1107.    static sos_Int local_hash_value(sos_Bag_node x);
  1108. };
  1109. #define _sos_Bag_node_type sos_Id::make(sos_Container::make(3690836),254708)
  1110. #define sos_Bag_node_type sos_type_object(_sos_Bag_node_type,sos_Id::make(sos_Container::make(279048),529560))
  1111. #endif
  1112.